package cn.agiledata.bank.barcodepayment.service;

import java.util.Date;
import java.util.List;

import cn.agiledata.bank.barcodepayment.exception.BarCodePayException;
import cn.agiledata.bank.barcodepayment.form.BarCodePayForm;
import cn.agiledata.bank.barcodepayment.logic.BarCode;
import cn.agiledata.bank.common.util.PageBean;
import cn.agiledata.bank.hibernateBean.Account;
import cn.agiledata.bank.hibernateBean.BarCodePayCorp;
import cn.agiledata.bank.hibernateBean.BarCodePayDetail;
import cn.agiledata.bank.hibernateBean.BarCodePayType;

public interface BarCodePayService {
	
	 public List getBarCodePayTypes();
	
	 public List getBarCodePayCorpsByType(Long type);
	 
	 public BarCodePayDetail getNewBarCodePayDetail(BarCodePayForm form,Account account,Date chargeDate) throws BarCodePayException;
	 
	 public void saveBarCodePayDetail(BarCodePayDetail detail);
	 
	 public void updateBarCodePayDetail(BarCodePayDetail detail);
	 
	 public BarCodePayCorp getBarCodePayCorpsByCode(String code);
	 
	 /**
	  * 得到订单号
	  * @return
	  */
	 public String getBarCodePayFeeNo();
	 
     public BarCode getBarCode(String corpCode, String barCodeValue)
     throws BarCodePayException ;
     
     public BarCodePayDetail getBarCodePayDetailByPayFeeNo(String feeCodeNo);
     
     public BarCodePayType getBarCodePayTypeById(Long id);
     
     /**
      * 当客户支付成功后，根据系统返回的transId，为detail对象设置更新的属性
      * @param detail
      * @param transId
      * @return
      */
     public BarCodePayDetail getPayedBarCodePayDetail(BarCodePayDetail detail,String transId);
     
     /**
      * 判断是否该条型码已经在我们网站支付过了，返回为false就是支付过了
      * @param barcode
      * @return
      */
     public boolean ifFeePayed(String barcode);
     
     public boolean ifDataExtended(Date data);
     
     /**
      * 发送缴费成功通知邮件
      * 
      * @param detail
      */
     public void sendNotify(BarCodePayDetail detail);
     
     /**
      * 根据缴费明细生成签名串
      * 
      * @param detail
      * @return
      */
     public String generateMac(BarCodePayDetail detail);
     //查询积分历史
     public PageBean getPayHistory(BarCodePayForm form);
     public BarCodePayDetail getBarCodePayDetailByCode(String code);

     public BarCodePayDetail paySuccess(String orderId, String transId);
}
